package com.adcc.ags.utility.xml;

import org.dom4j.Document;

import java.io.InputStream;

import java.util.List;
import java.util.Map;

/**
 * XML接口
 */
public interface IXML {

    /**
     * Root节点名称
     */
    public static String ROOT_NAME = "adcc";

    /**
     * Node节点名称
     */
    public static String NODE_NAME = "node";

    /**
     * ChildNode节点名称
     */
    public static String CHILD_NODE_NAME = "childNode";

    /**
     * Unit节点名称
     */
    public static String UNIT_NAME = "unit";

    /**
     * 取得root节点名称
     * @return
     */
    public String getRootName();

    /**
     * 设置root节点名称
     * @param rootName
     */
    public void setRootName(String rootName);

    /**
     * 取得字符集
     * @return
     */
    public String getCharser();

    /**
     * 设置字符集
     * @param charset
     */
    public void setCharset(String charset);

    /**
     * 取得Root节点
     * @return
     */
    public Map<String,String> getRoot();

    /**
     * 设置Root节点
     * @param root
     */
    public void setRoot(Map<String,String> root);

    /**
     * 设置SuperNodeList
     * @param superNodeList
     */
    public void setSuperNodeList(List<SuperNode> superNodeList);

    /**
     * 取得SuperNodeList
     * @return
     */
    public List<SuperNode> getSuperNodeList();

    /**
     * 添加SuperNode
     */
    public void addSuperNode(SuperNode node);

    /**
     * 取得SuperNode
     * @return
     */
    public SuperNode getSuperNode(String nodeName);

    /**
     * 设置NodeList
     * @param nodeList
     */
    public void setNodeList(List<Node> nodeList);

    /**
     * 取得NodeList
     * @return
     */
    public List<Node> getNodeList();

    /**
     * 拆解XML
     * @param is
     * @throws Exception
     */
    public void parse(InputStream is) throws Exception;

    /**
     * 拆解XML字符串
     * @param xmlString
     * @throws Exception
     */
    public void parseXMLString(String xmlString) throws Exception;

    /**
     * 拆解XML文件
     * @param filePath
     * @throws Exception
     */
    public void parseXMLFile(String filePath) throws Exception;

    /**
     * 创建XML
     * @return
     */
    public Document createXML() throws Exception;

    /**
     * 创建XML字符串
     * @return
     * @throws Exception
     */
    public String createXMLString() throws Exception;

    /**
     * 创建XML文件
     * @param filePath
     * @param pattern
     */
    public void createXMLFile(String filePath,XMLPattern pattern) throws Exception;
}
